package com.cskaoyan.tcp.exercise.second;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/*
        客户端文本文件，服务器保存文本文件

 */
public class Server {

    public static void main(String[] args) throws IOException {

        // 创建保存上传文件内容的，文件输出流
        FileWriter fileWriter = new FileWriter("b.txt");


        // 1. 创建ServerSocket对象
        ServerSocket serverSocket = new ServerSocket(9090);

        // 2. accept 接收处理连接请求
        Socket socket = serverSocket.accept();

        //3. 获取输入流，读取发送端发送的数据
        // socket中的输入流的read方法，也是一个阻塞方法
        InputStream in = socket.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(in));
        char[] chars = new char[1024];

        String line;
        //  readLine方法阻塞方法
        while ((line = br.readLine()) != null) {
            // 第一种解决方案
//            if ("finish".equals(line)) {
//                // 我们就认为，已经读取到文件末尾了
//                break;
//            }
            // 将接收到的数据写入字符数组
            fileWriter.write(line);
            // 写入换行符
            fileWriter.write('\n');
        }

        // 返回文件上传完毕的响应
        OutputStream out = socket.getOutputStream();
        out.write("文件上传完毕".getBytes());

        // 关闭文件输出流
        fileWriter.close();
        // 关闭socket
        socket.close();
        serverSocket.close();

    }
}
